iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 17
0
Modern Web

使用 Django 開發網頁系統系列 第 17

[Day 17] 新增資料(2)

  • 分享至 

  • xImage
  •  

今天把 item 新增做完 跟前面的程式碼很像

在 category.html 加上 新增商品 的連結

path route
store/urls.py

...
    path('itemCreate/', views.itemCreate, name='itemCreate'),
...

ModelChoiceField 是用FK上,會產生下拉式選單
第一個參數是 資料來源

store/forms.py

...
class ItemForm(forms.ModelForm):
    name = forms.CharField(label='名稱')
    category = forms.ModelChoiceField(Category.objects.all(), label='類別')
    price = forms.IntegerField(label='價錢')

    class Meta:
        model = Item
        fields = ('name', 'category', 'price', )

下拉式選單顯示格式,應該說 Category類別 預設要顯示什麼
兩個 Category & Item 都補上 _str_():
store/models.py

...
    def __str__(self):
        return self.name
...

store/views.py

...
def itemCreate(request):
    if request.method == 'GET':
        itemForm = ItemForm()
        return render(request, 'store/itemCreate.html', {'itemForm': itemForm})
    elif request.method == 'POST':
        itemForm = ItemForm(request.POST)
        if not itemForm.is_valid():
            return render(request, 'store/itemCreate.html', {'itemForm': itemForm})

        itemForm.save()
        messages.success(request, '新增成功')
        return redirect(reverse('store:category'))
...

store/templates/store/itemCreate.html

{% extends 'main/base.html' %}
{% block content %}
  <h3>新增項目</h3>
  <form method="post" action="{% url 'store:itemCreate' %}">
    {% csrf_token %}
    {{ itemForm.as_p }}

    <input type="submit" value="儲存">
  </form>
{% endblock %}

顯示部分放在 點進去 類別裡面

category.item_set.all 可以撈出所有fk 這個資料表的資料

store/templates/store/categoryRead.html

...
       <div>
        {% if category.item_set.all %}
          <table>
            <tr>
              <th>名稱</th>
              <th>價錢</th>
            </tr>
            {% for item in category.item_set.all %}
              <tr>
                <td>{{ item.name }}</td>
                <td>{{ item.price }}</td>
              </tr>
            {% endfor %}
          </table>
        {% endif %}
      </div>
...

今天就到這裡


上一篇
[Day 16] 讀取資料
下一篇
[Day 18] 樣式 css
系列文
使用 Django 開發網頁系統30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言